package com.topdt.jbpm.web.servlet.action;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.topdt.jbpm.form.TemplateCreater;
import com.topdt.jbpm.model.Form;
import com.topdt.jbpm.web.servlet.JbpmServlet;

/**
 * 
 * 建立日期 : 2013-10-16 下午3:37:19<br>
 * 作者 : 石艳<br>
 * 模块 : <br>
 * 描述 : 模板管理Action<br>
 * 修改历史: 序号 日期 修改人 修改原因 <br>
 * 1 <br>
 * 2 <br>
 */
public class TemplateAction extends JbpmBaseAction {

	public TemplateAction(JbpmServlet servlet) {
		super(servlet);
	}
  /*
   * 更新系统中的所有表单模板
   * 包括sys_wf_form
   */
	public void updateAllTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException {
		logger.debug("<进入>:updateAllTemplate方法   更新系统中所有表单模板");
		List<Form> forms =this.jbpmService.getFormDao().getAll();
		for(Form form : forms){
				form = updateTemplate(form);
				this.jbpmService.getFormDao().saveOrUpdate(form);
		}
		List<Form> sysForms = this.jbpmService.getFormDao().getSysForm();
		for(Form form : sysForms){
			form = updateTemplate(form);
			this.jbpmService.getFormDao().updateSysForm(form);
		}
	}
	
	private Form updateTemplate(Form form){
		logger.debug("<进入>:updateTemplate方法   更新模板");
		String tableHtml =TemplateCreater.getTableHtmlByForm(form);
		String tempHtml =TemplateCreater.createTemplate(tableHtml);
		String viewHtml = TemplateCreater.getViewHtmlByTemplate(tempHtml);
		String tempHtmlM= TemplateCreater.createMobileTemplate(form);
		byte[] tempHtmlBytes=new byte[]{};
		byte[] viewHtmlBytes=new byte[]{};
		byte[] tempHtmlMBytes=new byte[]{};
		try {
			tempHtmlBytes = tempHtml.getBytes("UTF-8");
			viewHtmlBytes = viewHtml.getBytes("UTF-8");
			tempHtmlMBytes = tempHtmlM.getBytes("UTF-8");
			form.setTempletByte(tempHtmlBytes);
			form.setTemplateViewByte(viewHtmlBytes);
			form.setMobileTemplateByte(tempHtmlMBytes);
		} catch (UnsupportedEncodingException e) {
			logger.error("<错误>:更新模板失败",e);
		}
		return form;
	}
	
}
